MoveWithTouch.ts 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import { _decorator, Component, EventKeyboard, EventTouch, input, Input, KeyCode, Node, UITransform, Vec3 } from 'cc';
  2. const { ccclass, property } = _decorator;
  3. @ccclass('MoveWithTouch')
  4. // @executeInEditMode
  5. export class MoveWithTouch extends Component {
  6. private _isFocused = false;
  7. private _fcheck: (target: Node) => boolean;
  8. protected onLoad(): void {
  9. // console.log(this.node.name + ' onLoad');
  10. let uiTransform = this.node.getComponent(UITransform);
  11. if (!uiTransform) {
  12. // uiTransform = this.node.addComponent(UITransform);
  13. // uiTransform.setContentSize(100, 100);
  14. } else {
  15. // if (uiTransform.width < 100 && uiTransform.height < 100) {
  16. // uiTransform.setContentSize(100, 100);
  17. // console.log(this.node.name + 'UITransform组件宽高均小于100,设置为100');
  18. // }
  19. }
  20. }
  21. protected onEnable(): void {
  22. this.node.on(Input.EventType.TOUCH_START, this.onTouchStart, this);
  23. this.node.on(Input.EventType.TOUCH_MOVE, this.onTouchMove, this);
  24. this.node.on(Input.EventType.TOUCH_END, this.onTouchEnd, this);
  25. this.node.on(Input.EventType.TOUCH_CANCEL, this.onTouchEnd, this);
  26. // input.on(Input.EventType.KEY_DOWN, (event: EventKeyboard) => {
  27. // // console.log('keyCode', event.keyCode);
  28. // if (event.keyCode === KeyCode.KEY_D) {
  29. // let b = false;
  30. // if (this._fcheck) {
  31. // b = this._fcheck(this.node);
  32. // }
  33. // if (b && this._isFocused && this.isValid) {
  34. // this.node.destroy();
  35. // }
  36. // }
  37. // });
  38. }
  39. protected onDisable(): void {
  40. this.node.off(Input.EventType.TOUCH_START, this.onTouchStart, this);
  41. this.node.off(Input.EventType.TOUCH_MOVE, this.onTouchMove, this);
  42. this.node.off(Input.EventType.TOUCH_END, this.onTouchEnd, this);
  43. this.node.off(Input.EventType.TOUCH_CANCEL, this.onTouchEnd, this);
  44. }
  45. update(deltaTime: number) {}
  46. onTouchStart(event: EventTouch) {
  47. this._isFocused = true;
  48. }
  49. onTouchMove(event: EventTouch) {
  50. // const touchPos = event.getUILocation();
  51. // const prePos = event.getPreviousLocation();
  52. let delta = event.getUIDelta();
  53. let now = event.target.getPosition();
  54. event.target.setPosition(now.add(new Vec3(delta.x, delta.y, 0)));
  55. }
  56. onTouchEnd(event: any) {
  57. this._isFocused = false;
  58. }
  59. setCheck(check: (target: Node) => boolean) {
  60. this._fcheck = check;
  61. }
  62. }